home *** CD-ROM | disk | FTP | other *** search
- 10 REM Program FILECAB3
- 20 REM Revised from FILECAB2 by Warren Cotton
- 30 REM Revision Date 05/27/84
- 99 '
- 1010 SCREEN 0,0,0:CLEAR
- 1020 KEY OFF: DEFINT A-Z: CLS
- 1030 OPEN "SCRN:" FOR OUTPUT AS #2
- 1040 DIM R$(21),AC(21),K(21,3),H$(21),RN$(21)
- 1050 H$(0)="REC #": Q$=CHR$(34): EH=0
- 1060 ON ERROR GOTO 1200: GOSUB 8000
- 1100 REM ===> BASENAME File Routines
- 1110 CLS:PRINT "SELECT FROM:":PRINT
- 1120 FOR J=1 TO NR: PRINT J" "R$(J): NEXT: PRINT
- 1130 PRINT J" CREATE A NEW DATA BASE"
- 1140 IF J>1 THEN PRINT J+1" DELETE A DATA BASE":PRINT
- 1150 INPUT"NUMBER";S: IF S<1 OR S>J+1 THEN GOSUB 9200: GOTO 1150
- 1160 IF S<J THEN DB$=R$(S): GOTO 1300
- 1170 ON S-NR GOTO 1220,1800
- 1200 RESUME 1210 'target of error
- 1210 ON ERROR GOTO 0
- 1220 IF J=0 THEN J=1
- 1230 PRINT: INPUT"NAME FOR NEW DATA BASE FILE: ",R$(J)
- 1240 IF LEN(R$(J))>8 THEN PRINT"MAX LENGTH 8 CHARACTERS": GOTO 1230
- 1250 FOR I=1 TO J-1: IF LEFT$(R$(I),5)<>LEFT$(R$(J),5) THEN NEXT: GOTO 1280
- 1260 PRINT"1ST 5 CHARACTERS DUPLICATE DATABASE "Q$+R$(I)+Q$"."
- 1270 PRINT"PLEASE CHOOSE ANOTHER NAME.": GOTO 1230
- 1280 DB$=R$(J): NR=J: GOSUB 8200
- 1300 ON ERROR GOTO 1510
- 1310 OPEN DB$+".HED" FOR INPUT AS #1
- 1315 ON ERROR GOTO 0
- 1320 INPUT #1,NH: FOR J=1 TO NH: INPUT #1,H$(J): NEXT: CLOSE #1
- 1330 MEM#=FRE(0): PRINT "AVAILABLE BYTES OF MEMORY ="FRE(0)
- 1340 PRINT: AVGFLEN=20: B=INT(MEM#/(AVGFLEN*NH))-10
- 1350 PRINT"DATABASE ";Q$+DB$+Q$;" HAS"NH"FIELDS.": PRINT
- 1355 PRINT"ASSUMING AN AVERAGE OF"AVGFLEN"CHARS/FIELD,"
- 1360 PRINT"MEMORY HAS ROOM FOR"B"RECORDS."
- 1370 DIM N$(B,NH),R(B): NR=0
- 1380 ON ERROR GOTO 1700
- 1400 OPEN DB$+".IND" FOR INPUT AS #1
- 1410 ON ERROR GOTO 0
- 1420 INPUT #1,NR: FOR J=1 TO NR: FOR I=1 TO NH
- 1430 LINE INPUT#1,N$(J,I)
- 1440 NEXT I,J: CLOSE #1: GOTO 2000
- 1500 REM ===> No field header file
- 1510 RESUME 1520 'target of error
- 1520 ON ERROR GOTO 0: NH=1
- 1530 CLS: PRINT "-RETURN- TO GO TO MAIN MENU"
- 1540 PRINT: GOSUB 1600: GOTO 1330
- 1600 REM ===> Accept field headers & write to file (.HED)
- 1610 PRINT"NAME FOR FIELD"NH;: INPUT": ",H$(NH)
- 1620 IF H$(NH)<>"" THEN NH=NH+1: IF NH<21 THEN 1610
- 1630 OPEN DB$+".HED" FOR OUTPUT AS #1
- 1640 NH=NH-1: PRINT #1,NH
- 1650 FOR J=1 TO NH: PRINT #1,H$(J): NEXT
- 1660 CLOSE #1: RETURN
- 1700 REM ===> No Database file
- 1710 RESUME 1720 'target of error
- 1720 ON ERROR GOTO 0
- 1730 PRINT: PRINT"DATABASE "Q$+DB$+Q$" ESTABLISHED"
- 1740 PRINT: INPUT"ARE YOU READY TO ENTER RECORDS";S$
- 1750 IF S$="Y" OR S$="y" THEN 6200 ELSE 2000
- 1800 REM ===> Delete a Data Base
- 1810 PRINT: INPUT"DATABASE # TO DELETE";S
- 1820 IF S<1 OR S>J-1 THEN GOSUB 9200: GOTO 1810
- 1830 CLS:LOCATE 9,1
- 1840 PRINT"READY TO DELETE "Q$+R$(S)+Q$".": PRINT
- 1850 PRINT"ONCE DELETED, THIS DATA CANNOT BE RECOVERED."
- 1860 INPUT"ARE YOU SURE YOU WANT TO DELETE IT (Y/N)";S$
- 1870 IF S$<>"Y" AND S$<>"y" THEN 1100
- 1880 ON ERROR GOTO 1920
- 1890 DB$=R$(S): GOSUB 4100
- 1900 FL$=DB$: FE$=".RPN": GOSUB 8300
- 1910 FE$=".RPT": FOR I=1 TO NN: FL$=LEFT$(DB$,5)+LEFT$(RN$(I),3): GOSUB 8300: NEXT: GOTO 1930
- 1920 RESUME 1930 'target of error
- 1930 ON ERROR GOTO 0
- 1940 FL$=DB$: FE$=".IND": GOSUB 8300
- 1950 FE$=".HED": GOSUB 8300
- 1960 GOSUB 8000: IF NR=1 THEN FL$="BASENAME": FE$="": GOSUB 8300: GOTO 9400
- 1970 FOR I=S TO NR-1: R$(I)=R$(I+1): NEXT: NR=NR-1
- 1980 PRINT: PRINT"DELETION COMPLETED": GOSUB 8200: GOTO 1100
- 2000 REM ===> Main Menu
- 2010 CLS: PRINT"******* FILE CABINET *******": PRINT
- 2020 PRINT"CURRENT DATA BASE: "DB$
- 2030 PRINT"CURRENT RECORD COUNT: "NR: PRINT
- 2040 PRINT"PRINTER ";: IF PF>0 THEN COLOR 23:PRINT"ON":COLOR 7: LM=50 ELSE PRINT"OFF": LM=21
- 2050 PRINT
- 2060 PRINT" 1 SELECT DATA BASE"
- 2070 PRINT" 2 SWITCH PRINTER ON/OFF"
- 2080 PRINT" 3 SEARCH DATA"
- 2090 PRINT" 4 LIST ALL RECORDS"
- 2100 PRINT" 5 REPORT"
- 2110 PRINT" 6 SORT DATA BASE"
- 2120 PRINT" 7 MODIFY DATA BASE"
- 2130 PRINT" 8 QUIT": PRINT: CD=0
- 2140 INPUT"NUMBER";S: IF S<1 OR S>8 THEN GOSUB 9200: GOTO 2140
- 2150 ON S GOTO 9400,2200,2400,2600,3000,5000,6000,9500
- 2200 IF PF THEN PF=0: CLOSE #2: OPEN "SCRN:" FOR OUTPUT AS #2: GOTO 2000
- 2210 CLS: PRINT"PRINTER OPTIONS:"
- 2220 PRINT" 1 => 40 COLUMNS"
- 2230 PRINT" 2 => 80 COLUMNS"
- 2240 PRINT" 3 => 132 COLUMNS": PRINT
- 2250 INPUT"WHICH";PF: IF PF<1 OR PF>3 THEN GOSUB 9200: GOTO 2250
- 2260 CLOSE #2: OPEN "LPT1:" FOR OUTPUT AS #2
- 2270 ON PF GOTO 2280,2300,2320
- 2280 PRINT #2,CHR$(18)
- 2290 PRINT"K": GOTO 2000
- 2300 PRINT #2,CHR$(18)
- 2310 PRINT"K80N": GOTO 2000
- 2320 PRINT #2,CHR$(15) 'compressed print
- 2330 PRINT"K132N": GOTO 2000
- 2400 REM ===> Search Data
- 2410 L=0
- 2420 CLS: PRINT"SEARCH ANY OF THE FOLLOWING FIELDS:": PRINT: GOSUB 7700
- 2430 INPUT"NUMBER";S: IF S<0 OR S>NH THEN GOSUB 9200: GOTO 2430
- 2440 PRINT: PRINT"ENTER THE ";H$(S);: INPUT" TO BE FOUND: ",S$
- 2450 CLS: L=0: IF S=0 THEN J=VAL(S$): GOSUB 2800: GOTO 2500
- 2460 FOR J=1 TO NR: N$(J,0)=STR$(J)
- 2470 I=INSTR(N$(J,S),S$): IF I>0 THEN GOSUB 2800
- 2490 NEXT J
- 2500 INPUT"SEARCH FINISHED -- MORE SEARCHES (Y/N)";L$
- 2510 IF L$="Y" OR L$="y" THEN 2420 ELSE 2000
- 2600 REM ===> List All Records
- 2610 L=0: CLS: IF PF THEN LPRINT CHR$(12)
- 2620 FOR J=1 TO NR: GOSUB 2800: NEXT J
- 2630 INPUT"END OF LIST -RETURN- FOR MENU",L$: GOTO 2000
- 2800 REM ===> Print a Record
- 2810 PRINT #2,H$(0)": ";J
- 2820 FOR I=1 TO NH: PRINT #2,I" "H$(I)": "N$(J,I): NEXT
- 2830 PRINT #2,: L=L+NH+2: IF L+NH<LM THEN 2880
- 2835 IF PF THEN PRINT #2,CHR$(12)
- 2840 PRINT "-RETURN- TO CONTINUE; -ESC- FOR MAIN MENU";
- 2850 L$=INKEY$: IF L$="" THEN 2850
- 2860 IF L$=CHR$(27) THEN 2000 ELSE IF L$<>CHR$(13) THEN 2850
- 2870 CLS: L=0
- 2880 RETURN
- 3000 REM ===> Report
- 3010 T9=0: CLS: E=0
- 3020 FOR J=0 TO 21: FOR I=0 TO 3: K(J,I)=0: NEXT I,J
- 3030 FOR I=0 TO NH: AC(I)=0: NEXT: HC=0: GT=0
- 3040 ON E GOTO 3420
- 3050 REM Select Report
- 3060 ON ERROR GOTO 3210: GOSUB 4100
- 3070 CLS: PRINT"SELECT FROM:": PRINT
- 3080 FOR I=1 TO NN: PRINT I" "RN$(I): NEXT: PRINT
- 3090 PRINT I" CREATE A NEW REPORT FORMAT"
- 3100 PRINT I+1" DELETE A REPORT FORMAT": PRINT
- 3110 INPUT"NUMBER";S: IF S<1 OR S>I+1 THEN GOSUB 9200: GOTO 3110
- 3120 IF S=I+1 THEN 4000
- 3130 NN=S: IF S=I THEN 3260
- 3140 REM ===> Read Report Format File (.RPT)
- 3150 E=1: FL$=LEFT$(DB$,5)+LEFT$(RN$(NN),3)
- 3160 OPEN FL$+".RPT" FOR INPUT AS #1
- 3170 ON ERROR GOTO 0
- 3180 INPUT #1,RH
- 3190 FOR J=0 TO RH: INPUT #1,K(J,1),K(J,2),K(J,3): NEXT
- 3200 CLOSE #1: GOSUB 7700: GOTO 3420
- 3210 RESUME 3220 'target of error
- 3220 ON ERROR GOTO 0
- 3230 CLS: PRINT"NO REPORT FORMATS ARE STORED": PRINT: NN=1
- 3240 INPUT"CREATE A REPORT FORMAT (Y/N)";L$
- 3250 IF L$="Y" OR L$="y" THEN 3260 ELSE 2000
- 3260 GOSUB 7700
- 3270 INPUT"HOW MANY FIELDS";RH
- 3280 IF RH<1 OR RH>NH+1 THEN GOSUB 9200: GOTO 3270
- 3290 IF E=0 THEN RN$(NN)="PRESENT"
- 3300 FOR J=1 TO RH
- 3310 PRINT"FIELD # FOR POSITION"J;: INPUT": ",K(J,1)
- 3320 IF K(J,1)<0 OR K(J,1)>NH THEN 3310
- 3330 PRINT"STARTING COLUMN FOR ";H$(K(J,1));: INPUT K(J,2)
- 3340 IF K(J,2)<0 OR K(J,2)>255 THEN 3330
- 3350 PRINT"ACCUM TOTAL ON ";H$(K(J,1));: INPUT" (Y/N)";L$
- 3360 IF L$="Y" OR L$="y" THEN K(J,3)=1: K(0,3)=1
- 3370 NEXT J
- 3380 IF K(0,3)=0 THEN 3420
- 3390 INPUT"STARTING COLUMN FOR TOTAL";K(0,2)
- 3400 IF K(0,2)=0 THEN K(0,3)=0: T9=1: GOTO 3420
- 3410 IF K(0,2)<0 OR K(0,2)>131 THEN GOSUB 9200: GOTO 3390
- 3420 PRINT
- 3430 INPUT"SELECT RECORDS BY WHICH FIELD #";S
- 3440 IF S=0 THEN S$="@": GOTO 3510
- 3450 IF S>NH THEN BEEP: GOSUB 9200: GOTO 3430
- 3460 INPUT"ENTER 'AND' FIELD # (0 IF NONE): ",X
- 3470 IF X>NH THEN BEEP: GOSUB 9200: GOTO 3460
- 3480 PRINT: PRINT"'@' WILL SELECT ALL RECORDS:"
- 3490 PRINT"SELECT RECORDS FOR "H$(S);: INPUT"= ";S$
- 3500 IF X=0 THEN X$="@" ELSE PRINT "'AND' "H$(X);: INPUT"= ";X$
- 3510 IF PF THEN PRINT #2,CHR$(12)
- 3520 GOSUB 3950: FOR J=1 TO NR
- 3530 N$(J,0)=STR$(J)
- 3540 IF S$="@" THEN 3580
- 3550 IF LEFT$(N$(J,S),LEN(S$))<>S$ THEN 3590
- 3560 IF X$="@" THEN 3580
- 3570 IF LEFT$(N$(J,X),LEN(X$))<>X$ THEN 3590
- 3580 GOSUB 3700
- 3590 IF L>LM THEN GOSUB 3900
- 3600 NEXT J
- 3610 ON T9 GOSUB 3800
- 3620 ON E GOTO 3650
- 3630 PRINT:INPUT"SAVE THE FORMAT FOR THIS REPORT (Y/N)";L$
- 3640 IF L$="Y" OR L$="y" THEN E=1: GOSUB 4400
- 3650 PRINT: PRINT "MORE REPORTS WITH THE "RN$(NN);: INPUT" FORMAT (Y/N)";L$
- 3660 IF L$="Y" OR L$="y" THEN GOSUB 7700: E=1: GOTO 3030
- 3670 GOTO 2000
- 3700 REM Subroutine to print the report
- 3710 FOR I=1 TO RH: PRINT #2,TAB(K(I,2)) N$(J,K(I,1));
- 3720 IF K(I,3)=1 THEN V=VAL(N$(J,K(I,1))): AC(I)=AC(I)+V: HC=HC+V
- 3730 NEXT I
- 3740 IF K(0,3)=1 THEN IF HC<>0 THEN PRINT #2,TAB(K(0,2)) HC;: GT=GT+HC: HC=0
- 3750 L=L+1: PRINT #2,: RETURN
- 3800 REM Subroutine to print report totals
- 3810 FOR I=1 TO 39+((PF>1)*39): PRINT #2,"-";: NEXT: PRINT #2,
- 3820 FOR I=1 TO RH
- 3830 IF AC(I)>0 THEN PRINT #2,TAB(K(I,2)) AC(I);
- 3840 NEXT I
- 3850 IF GT<>0 THEN PRINT #2,TAB(K(0,2)) GT;
- 3860 PRINT #2,: RETURN
- 3900 REM Subroutine to print report header
- 3910 IF PF>0 THEN PRINT #2,CHR$(12): GOTO 3950
- 3920 PRINT: PRINT "-RETURN- TO CONTINUE; -ESC- TO END REPORT";
- 3930 L$=INKEY$:IF L$="" THEN 3930
- 3940 IF L$=CHR$(27) THEN 3620 ELSE IF L$<>CHR$(13) THEN 3930
- 3950 CLS: PRINT #2,RN$(NN)" REPORT FOR "H$(S)": "S$;
- 3960 IF X$="@" THEN PRINT #2, ELSE PRINT #2," AND "H$(X)": "X$
- 3970 FOR I=1 TO RH: PRINT #2,TAB(K(I,2)) H$(K(I,1));: NEXT
- 3980 IF K(0,3)=1 THEN PRINT #2,TAB(K(0,2)) "TOTAL";
- 3990 PRINT #2,: PRINT #2,: L=4: RETURN
- 4000 REM ===> Delete a Report Format
- 4010 PRINT: INPUT"DELETE WHICH FORMAT (0 TO ABORT DELETION)";S
- 4020 IF S<0 OR S>NN THEN GOSUB 9200: GOTO 4010
- 4030 IF S=0 THEN 2000
- 4040 FL$=LEFT$(DB$,5)+LEFT$(RN$(S),3):FE$=".RPT": GOSUB 8300
- 4050 FE$=".RPN": IF NN=1 THEN FL$=DB$: GOSUB 8300: GOTO 2000
- 4060 FOR I=S TO NN-1: RN$(I)=RN$(I+1): NEXT
- 4070 NN=NN-1: GOSUB 4100: GOTO 2000
- 4100 REM ===> Read Report Name File (.RPN)
- 4110 OPEN DB$+".RPN" FOR INPUT AS #1
- 4120 ON ERROR GOTO 0
- 4130 INPUT #1,NN: FOR J=1 TO NN: INPUT #1,RN$(J): NEXT
- 4140 CLOSE #1: RETURN
- 4200 REM ===> Save Report Name File (.RPN)
- 4210 OPEN DB$+".RPN" FOR OUTPUT AS #1
- 4220 PRINT #1,NN
- 4230 FOR J=1 TO NN: PRINT #1,RN$(J): NEXT
- 4240 CLOSE #1: RETURN
- 4400 REM ===> Save Report Format File
- 4410 PRINT: INPUT"REPORT FORMAT NAME";RN$(NN)
- 4420 FOR I=1 TO NN-1: IF LEFT$(RN$(I),3)<>LEFT$(RN$(NN),3) THEN NEXT: GOTO 4450
- 4430 PRINT"1ST 3 CHARACTERS DUPLICATE ANOTHER FORMAT"
- 4440 PRINT"PLEASE CHOOSE ANOTHER NAME": GOTO 4410
- 4450 FL$=LEFT$(DB$,5)+LEFT$(RN$(NN),3)
- 4460 OPEN FL$+".RPT" FOR OUTPUT AS #1: PRINT #1,RH
- 4470 FOR J=0 TO RH: PRINT #1,K(J,1);",";K(J,2);",";K(J,3): NEXT
- 4480 CLOSE #1: GOSUB 4200: RETURN
- 5000 REM ===> Sort Data Base
- 5010 CLS: MF=1: GOSUB 7700
- 5020 INPUT"SORT ON WHICH FIELD #";S: IF S<1 OR S>NH THEN 5020
- 5030 PRINT:PRINT" 1 SORT ALPHA"
- 5040 PRINT" 2 SORT NUMERIC": PRINT
- 5050 INPUT"WHICH";L: IF L<1 OR L>2 THEN 5050
- 5060 PRINT: PRINT "SORTING ..."
- 5070 FOR I=1 TO NR: R(I)=0: NEXT
- 5080 FOR I=1 TO NR: FOR J=1 TO NR
- 5090 ON L GOTO 5100,5120
- 5100 IF N$(I,S)>=N$(J,S) THEN R(I)=R(I)+1
- 5110 GOTO 5130
- 5120 IF VAL(N$(I,S))>=VAL(N$(J,S)) THEN R(I)=R(I)+1
- 5130 NEXT J,I
- 5140 PRINT "SORT PHASE 1 FINISHED"
- 5150 FOR I=NR TO 1 STEP -1:FOR J=NR TO 1 STEP -1
- 5160 IF I<>J THEN IF R(I)=R(J) THEN R(J)=R(J)-1
- 5170 NEXT J,I
- 5180 PRINT"SORT PHASE 2 FINISHED": J=1
- 5190 IF R(J)=J THEN J=J+1:GOTO 5190
- 5200 IF J>=NR THEN 5230
- 5210 FOR I=1 TO NH: SWAP N$(R(J),I),N$(J,I): NEXT
- 5220 SWAP R(R(J)),R(J): GOTO 5190
- 5230 BEEP: PRINT"SAVE THE ";DB$;" FILE SORTED BY ";H$(S);: INPUT L$
- 5240 IF L$="Y" OR L$="y" THEN GOSUB 8100
- 5250 GOTO 2000
- 6000 REM ===> Modify Data Base sub-menu
- 6010 CLS: PRINT"**** MODIFY DATA BASE ****": PRINT
- 6020 PRINT"CURRENT DATA BASE: "DB$
- 6030 PRINT"CURRENT RECORD COUNT: "NR
- 6040 PRINT"ROOM FOR"B - NR"MORE RECORDS": PRINT
- 6050 PRINT" 1 ENTER RECORDS"
- 6060 PRINT" 2 CHANGE DATA"
- 6070 PRINT" 3 DELETE RECORDS"
- 6080 PRINT" 4 EXPAND DATA BASE (ADD HEADERS)"
- 6090 PRINT" 5 RETURN TO MAIN MENU": PRINT
- 6100 INPUT"NUMBER";S: IF S<1 OR S>5 THEN GOSUB 9200: GOTO 6100
- 6110 ON S GOTO 6200,6400,6600,6700,6900
- 6200 REM ===> Enter Records
- 6210 CLS
- 6220 NR=NR+1: PRINT"ENTERING RECORD #"NR: PRINT
- 6230 FOR I=1 TO NH: PRINT H$(I)": ";: I$=""
- 6240 LINE INPUT I$: IF LEFT$(I$,1)=CHR$(3) THEN STOP
- 6250 IF I$="*" AND NR>1 THEN N$(NR,I)=N$(NR-1,I) ELSE N$(NR,I)=I$
- 6260 NEXT I: PRINT: CD=1
- 6270 INPUT"ENTER ANOTHER RECORD (Y/N)";L$
- 6280 IF L$="Y" OR L$="y" THEN 6220 ELSE 6000
- 6400 REM ===> Change Data
- 6410 PRINT: INPUT"REC # TO BE CHANGED";J
- 6420 CLS: PRINT H$(0);": ";J
- 6430 FOR I=1 TO NH: PRINT I" "H$(I)": "N$(J,I): NEXT: PRINT
- 6440 INPUT"FIELD NUMBER TO BE CHANGED (0 FOR NO CHANGE)";S
- 6450 IF S<1 THEN 6500 ELSE IF S>NH THEN GOSUB 9200: GOTO 6440
- 6460 PRINT: PRINT"FROM ";H$(S);": ";N$(J,S)
- 6470 PRINT" TO ";H$(S);": ";
- 6480 I$="": LINE INPUT I$: CD=1
- 6490 IF I$="*" AND J>1 THEN N$(J,S)=N$(J-1,S) ELSE N$(J,S)=I$
- 6500 PRINT: PRINT"(-ESC- TO END CHANGES, -RETURN- FOR NEXT HIGHER REC #)"
- 6510 PRINT"NEXT REC # TO CHANGE? ";: LOCATE ,,1: A$=""
- 6520 L$=INKEY$: IF L$="" THEN 6520
- 6530 IF L$=CHR$(27) THEN 6000
- 6540 IF L$=CHR$(13) THEN IF LEN(A$)=0 THEN J=J+1: GOTO 6420 ELSE J=VAL(A$): GOTO 6420
- 6550 IF L$=CHR$(8) THEN LOCATE ,POS(0)-1: PRINT" ";: LOCATE ,POS(0)-1,1: IF LEN(A$)>0 THEN A$=LEFT$(A$,LEN(A$)-1): GOTO 6520 ELSE 6520
- 6560 IF ASC(L$)>=48 AND ASC(L$)<=57 THEN PRINT L$;: A$=A$+L$: ELSE BEEP
- 6570 GOTO 6520
- 6600 REM ===> Delete Records
- 6605 CLS
- 6610 INPUT"ENTER REC # TO DELETE (-RETURN- TO END DELETION): ",DR
- 6620 IF DR<1 THEN 6000 ELSE IF DR>NR THEN GOSUB 9200: GOTO 6610
- 6630 PRINT: PRINT H$(0);": ";DR
- 6640 FOR I=1 TO NH: PRINT I" "H$(I)": "N$(DR,I): NEXT
- 6650 PRINT: INPUT"DELETE THIS RECORD (Y/N)";L$
- 6660 IF L$="Y" OR L$="y" THEN 6670 ELSE PRINT: GOTO 6610
- 6670 FOR J=DR TO NR-1: FOR I=1 TO NH
- 6680 N$(J,I)=N$(J+1,I): NEXT I,J: NR=NR-1: CD=1
- 6690 PRINT: PRINT">>> RECORD NUMBER"DR"DELETED <<<": PRINT: GOTO 6610
- 6700 REM ===> Expand data base
- 6710 CLS: PRINT"CURRENT FIELDS ARE:": PRINT
- 6720 FOR I=1 TO NH: PRINT I;" ";H$(I): NEXT
- 6730 PRINT: PRINT"ENTER NEW HEADERS -RETURN- WHEN FINISHED"
- 6740 PH=NH: NH=NH+1: PRINT: GOSUB 1600
- 6750 EH=1: GOSUB 8100: PRINT: PRINT"EXPANSION COMPLETED"
- 6760 EH=O: ERASE N$,R: GOTO 1330
- 6900 REM ===> Return to Main Menu
- 6910 IF CD=1 THEN GOSUB 8100
- 6920 GOTO 2000
- 7700 REM ===> Sub-Menu of Field Headers
- 7710 PRINT "SELECT FROM:":PRINT
- 7720 IF MF=0 THEN PRINT MF;" ";H$(0)
- 7730 FOR I=1 TO NH: PRINT I;" ";H$(I): NEXT
- 7740 PRINT: MF=0: RETURN
- 8000 REM ===> Read Basename File
- 8020 OPEN "BASENAME" FOR INPUT AS #1
- 8030 ON ERROR GOTO 0
- 8040 INPUT #1,NR: FOR J=1 TO NR: INPUT #1,R$(J): NEXT
- 8050 CLOSE #1: RETURN
- 8100 REM ===> Write Database File (.IND)
- 8110 OPEN DB$+".IND" FOR OUTPUT AS #1
- 8120 PRINT #1,NR
- 8130 FOR J=1 TO NR: FOR I=1 TO NH
- 8140 IF EH=1 AND I>PH THEN PRINT #1,"" ELSE PRINT #1,N$(J,I)
- 8150 NEXT I,J: CLOSE #1: RETURN
- 8200 REM ===> Write Basename File
- 8220 OPEN "BASENAME" FOR OUTPUT AS #1
- 8230 PRINT #1,NR
- 8240 FOR J=1 TO NR: PRINT #1,R$(J): NEXT
- 8250 CLOSE #1: RETURN
- 8300 REM ===> Delete a File
- 8310 PRINT"FILE "FL$+FE$;
- 8320 ON ERROR GOTO 8340
- 8330 KILL FL$+FE$: PRINT" DELETED": GOTO 8350
- 8340 PRINT" NOT FOUND": RESUME 8350 'target of error
- 8350 ON ERROR GOTO 0: RETURN
- 9200 REM ===> Subroutine to erase a line
- 9210 RWLC=CSRLIN-1: LOCATE RWLC,1: PRINT SPC(50);
- 9220 LOCATE RWLC,1: BEEP: RETURN
- 9400 CLOSE: RUN
- 9500 END
- 9999 REM ===> Dummy line for RENUM
- OCATE RWLC,1: PRINT SPC(50);
- 9220 LOCATE